#include <stdio.h>
#include <unistd.h>

int main() {
    printf("I am running...\n");
    sleep(3);
    int *p = NULL;
    *p = 100;
    return 0;
}

























// #include <stdio.h>
// #include <signal.h>
// #include <unistd.h>
// #include <stdlib.h>
// #include <stdbool.h>
// int count = 0;

// void handler(int signal) {
//     printf("我是%d, 我获得了一个信号%d\n", getpid(), signal);
//     printf("count = :%d\n", count);
//     exit(1);
// }

// int main() {
//     signal(SIGALRM, handler);
//     alarm(1);
//     while(true) {
//         count++;
//     }
//     return 0;
// }















// #include <stdio.h>
// #include <unistd.h>
// #include <string.h>
// #include <stdlib.h>
// #include <sys/wait.h>
// #include <sys/types.h>

// int main() {
//     int fd[2] = {0};
//     if(pipe(fd) < 0) {
//         perror("pipe error");
//         exit(1);
//     }
//     pid_t id = fork();
//     if(id == 0) {
//         // 子进程
//         close(fd[0]);
//         const char* message = "hello father, I am child...";
//         int count = 10;
//         while(count--) {
//             write(fd[1], message, strlen(message));
//             sleep(1);
//         }
//         close(fd[1]);
//         exit(0);
//     }
//     // 父进程
//     close(fd[1]);
//     close(fd[0]);
//     int status = 0;
//     waitpid(id, &status, 0);
//     printf("child get signal:%d\n", status & 0x7F);
//     return 0;
// }
















// #include <stdio.h>
// #include <stdlib.h>
// #include <unistd.h>
// #include <signal.h>
// #include <stdbool.h>

// void handler(int signal) {
//     printf("我是%d, 我获得了一个信号%d\n", getpid(), signal);
// }

// int main() {
//     signal(6, handler);
//     while(true) {
//         sleep(1);
//         abort();
//     }
//     return 0;
// }


























// #include <stdio.h>
// #include <unistd.h>
// #include <signal.h>
// #include <stdbool.h>

// void handler(int signal) {
//     printf("我是%d, 我获得了一个信号%d\n", getpid(), signal);
// }

// int main() {
//     signal(2, handler);
//     while(true) {
//         sleep(1);
//         raise(2);
//     }
//     return 0;
// }